package com.hgyc.mom.tool.service;

import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hgyc.mom.tool.entity.CustomReport;
import com.hgyc.mom.tool.entity.CustomReportField;
import com.hgyc.mom.tool.vo.CustomReportParamVO;
import com.hgyc.mom.tool.vo.CustomReportVO;

/**
 * 自定义报Service接口
 *
 * @author fwj
 * @since 2025-04-29
 */
public interface CustomReportService extends IService<CustomReport> {

    /**
     * 解析sql脚本
     * @param customReport 报表信息
     * @return 解析字段
     */
    List<CustomReportField> parseSql(CustomReportVO customReportVO);

    /**
     * 获取报表数据
     * @param page 分页信息
     * @param customReportParamVO 报表信息
     * @return 报表数据
     */
    Page<Map<String, Object>> getReportData(Page page, CustomReportParamVO customReportParamVO);

    /**
     * 保存自定义报表
     * @param customReportVO 自定义报表信息
     * @return 自定义报表
     */
    CustomReportVO saveReport(CustomReportVO customReportVO);

    /**
     * 获取报表信息
     * @param id 报表ID
     * @return 报表信息
     */
    CustomReportVO getReportInfo(Long id);

    /**
     * 根据报表编码获取报表字段
     * @param code 报表编码
     * @return 报表字段
     */
    List<CustomReportField> getFieldByCode(String code);
}